package untiring07;

public class J19_callBy {

	/**
	 * call by value vs call by reference 값 이동시키기 swap a = 3, b = 5 -->
	 * swap(3,5) --> a = 5, b = 3
	 * 
	 */
	public static void main(String[] args) {
		int a = 3, b = 5;// 기본 자료형
		int[] aa = { 3 }; // 참조 자료형
		int[] bb = { 5 };

		System.out.println("swap 호출전 a : " + a + " b : " + b);
		System.out.println("swap 호출전 aa : " + aa[0] + " bb : " + bb[0]);

		swap(a, b); // 기본 자료형
		swap(aa, bb); // 참조 자료형
		System.out.println(a+","+aa+","+aa[0]);
		swap(aa[0],bb[0]);
		
		System.out.println("swap 호출후 a : " + a + " b : " + b);
		System.out.println("swap 호출후 aa : " + aa[0] + " bb : " + bb[0]);

	}// main

	static void swap(int x, int y) {
		// x = y ; y = x;
		int tmp = x;
		x = y;
		y = tmp;
		System.out.println("swap 실행중 a : " + x + " b : " + y);
	}

	static void swap(int[] x, int[] y) {
		int tmp = x[0];
		x[0] = y[0];
		y[0] = tmp;
		System.out.println("swap 실행중 aa : " + x[0] + " b : " + y[0]);
	}

}// class
